package com.copa.gamestore.module.order.application;

import com.copa.gamestore.common.response.ResponseVo;
import com.copa.gamestore.module.order.domain.Order;
import com.copa.gamestore.module.order.domain.OrderLog;
import com.copa.gamestore.module.order.dto.OrderDto;
import com.copa.gamestore.module.order.dto.OrderPayDto;
import com.copa.gamestore.module.order.vo.OrderAdminListVo;
import com.copa.gamestore.module.order.vo.OrderLogVo;
import com.copa.gamestore.module.order.vo.OrderVo;

import java.util.List;

/**
 * @author copa
 * @createDate 2022-09-27 17:57
 * @function
 */
public interface OrderApplicationService {
    ResponseVo<OrderVo> order(OrderDto orderDto);

    ResponseVo<String> finishPay(String orderSn);

    ResponseVo<String> cancelPay(String orderSn);

    ResponseVo<List<Order>> list(Integer status);

    ResponseVo<OrderVo> get(String orderSn);

    ResponseVo<String> receive(String orderSn);

    ResponseVo<String> refund(String orderSubSn);

    ResponseVo<String> checkRefund(String orderSubSn, Integer refundStatus);

    ResponseVo<List<OrderAdminListVo>> checkRefundList();

    ResponseVo<List<OrderAdminListVo>> listAdmin(Integer status);

    ResponseVo<OrderVo> getAdmin(String orderSn);

    ResponseVo<List<OrderLog>> getLog(String orderSn);

    ResponseVo<List<OrderLog>> getLogAdmin(String orderSn);

    void timeOutOrderCheck();

    void add(OrderLogVo orderLogVo);
}
